package com.zh.remote.impl;

import cn.dev33.satoken.annotation.SaIgnore;
import com.zh.constants.Constants;
import com.zh.mapstruct.LoginStructMapper;
import com.zh.pojo.domain.Login;
import com.zh.remote.api.LoginApi;
import com.zh.remote.pojo.param.CreateLoginDto;
import com.zh.remote.pojo.param.UpdateLoginDto;
import com.zh.result.JSONResult;
import com.zh.service.ILoginService;
import com.zh.utils.NameUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;

/**
 * 远程调用loginApi对象 ，并实现LoginApi接口
 */
@RestController
public class RemoteLoginApiImpl implements LoginApi {
    @Autowired
    private ILoginService loginService;


    /**
     * 创建一个logon对象
     *
     * @param dto
     * @return
     */
    @Override
    @SaIgnore
    public JSONResult createLogin(CreateLoginDto dto) {
        Login login = LoginStructMapper.INSTANCE.createLoginDtoConvertLogin(dto);
        // 默认开启账号启动
        login.setEnabled(false);
        // 默认不开启管理员
        login.setAdmin(false);
        login.setCreateTime(new Date());
        // 获取昵称
        login.setNickName(NameUtil.getName());
        // 获取头像
        login.setAvatar(Constants.Login.AVATAR_ADDRESS);

        loginService.save(login);
        return JSONResult.success("Login对象保存成功");

    }

    @Override
    public JSONResult updateLogin(UpdateLoginDto dto) {
        Login login = loginService.getById(dto.getId());
        LoginStructMapper.INSTANCE.updateLoginFromDto(dto, login);
        login.setUpdateTime(new Date());
        loginService.updateById(login);
        return JSONResult.success("Login对象修改成功");
    }
}
